A multi-user device allows for multiple users to use the same computer at the same time and/or different times. A multi-user device might include, for example, a workstation that implements multiple user accounts such as Linux, Unix, Windows 2000 and Windows XP, among others, as well as remote access technologies such as Microsoft Windows Terminal Services, Citrix MetaFrame Services and the like. In addition to workstation, remote access, and home computer type devices, multi-user devices might also include a variety of appliances such as cash registers, office equipment, set top boxes, home automation controls, and the like in which multiple people or software processes may use the machine at the same time or at different times.
Multi-user operating systems generally run application programs in the context of a particular user session. A user session is associated with a person. Each user session emulates a single user workstation environment, providing an operating environment similar to that for which most application programs are designed. When multiple user sessions exist on the same multi-user device, it is normally possible for more than one copy of a given application program to be active at the same time.
In multi-user operating systems, a network adapter is a global system resource used to represent a network interface card (NIC) installed on the device. Host addresses are associated with network adapters. Because network adapters are global system resources, they are equally visible to applications running in each user session of a multi-user device. So despite being run in an emulated environment, applications running in one user session of a multi-user device use the same host addresses as applications running in every other user session of the device.
Various application programs designed for single-user devices require exclusive ownership of network resources called ports, which are associated with a host address. Examples include network server, collaboration, peer-to-peer applications, and the like. Many applications request exclusive access to a particular port of every host address assigned to the device, which effectively prevents multiple instances of the application from running even if multiple host addresses are associated with the device. While this may be acceptable on a single-user device, it prevents more than one person from running the application at any given time on a multi-user device.
Various network management tasks would benefit from being able to associate particular network activities and events with specific users. Examples include access control, auditing, bandwidth management, network blocking, network filtering, usage policy management, troubleshooting, quality of service management, prioritization of service, and the like. However, network communication packets are associated only with a host address. In the case of single user devices (e.g., workstations), knowing a host address is often sufficient to correlate network traffic with a user session, since only one user session may be active on a single user device at a time. In multi-user environments, however, the problem of associating a particular user session with network traffic is much more difficult, because the traffic could be associated with any of the user sessions running on the multi-user device.
Some existing applications implementing network management tasks were not designed to operate in an environment that includes multi-user devices, and incorrectly assume that each user session in the environment is associated with a unique host address. These applications may exhibit unreliable behavior, including data corruption, security breaches, and other problems, when deployed in multi-user environments.
Hence, there remains a need for a method and system that assigns a unique host address to each user session in a multi-user environment.
Accordingly, several objects and advantages of my invention are:                (a) to allow many currently inoperable and unreliable application programs to operate properly in a multi-user operating system environment;        (b) to do so without requiring those applications to be modified, redesigned, or recompiled;        (c) to do so without requiring modification, redesign, or recompilation of the operating system itself.        
Further objects and advantages of my invention will become apparent from a consideration of the drawings and ensuing description.